package com.dms.modules.community.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dms.modules.community.dto.CommunityCommentDTO;
import com.dms.modules.community.dto.CommunityCommentDetailDTO;
import com.dms.modules.community.dto.CommunityCommentTreeDTO;
import com.dms.modules.community.entity.CommunityComment;

import java.util.List;

public interface CommunityCommentService extends IService<CommunityComment> {
    /**
     * 创建评论
     */
    void createComment(CommunityCommentDTO commentDTO);

    /**
     * 删除评论
     */
    void deleteComment(Long commentId);

    /**
     * 获取帖子评论列表
     */
    IPage<CommunityCommentDetailDTO> getPostComments(Long postId, Page<CommunityCommentDetailDTO> page);

    /**
     * 点赞/取消点赞评论
     */
    void likeComment(Long commentId);

    /**
     * 获取评论列表（分页）
     * @param postId 帖子ID
     * @param currentUserId 当前用户ID
     * @param page 分页参数
     * @return 评论列表，包含每个评论的回复数量
     */
    IPage<CommunityCommentTreeDTO> getCommentList(Long postId, Long currentUserId, Page<CommunityCommentTreeDTO> page);

    /**
     * 获取评论的回复列表
     * @param commentId 评论ID
     * @param currentUserId 当前用户ID
     * @return 回复列表
     */
    List<CommunityCommentTreeDTO> getCommentReplies(Long commentId, Long currentUserId);

    /**
     * 获取指定评论列表的所有回复（包括子回复）
     * @param postId 帖子ID
     * @param commentIds 评论ID列表
     * @param currentUserId 当前用户ID
     * @return 所有回复列表
     */
    List<CommunityCommentTreeDTO> getAllCommentReplies(Long postId, List<Long> commentIds, Long currentUserId);
} 